// 这是一个使用dup函数复制文件描述的实例，应用代码首先调用open函数
// 创建并打印一个由argv参数指定的文件，打印输出当前的文件描述符
// 然后调用dup函数获得dup函数获得新的文件描述符
// 如果调用成功，则打印输出新的文件描述符
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc, char *argv[]){
	
	// 记录文件描述符
	int fd,fdup;

	if(argc != 2){
		printf("Please input the current para!\n");
		return -1;
	}

	fd = open(argv[1],O_WRONLY|O_CREAT, 0644);

	if(fd == -1){
		printf("文件打开失败!\n");
		return -2;
	}

	printf("文件打开成功!\n");

	printf("%s的描述符为：%d\n",argv[1],fd);

	// 使用dup函数复制文件描述符
	printf("使用dup函数复制文件描述符\n");

	fdup = dup(fd);

	if(fdup == -1){
		printf("dup函数获取文件描述符失败!\n");
		return -3;
	}else{
		printf("dup函数成功获取文件描述符!\n");
		printf("dup获得的%s文件的描述符为%d\n",argv[1],fdup);
	}

	return 0;

}
